SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TMDOCU_PROV_I06]            
/*---------------------------------------------------------*/                
/*---Empresa              : OFISIS S.A.                  --*/                
/*---Cliente              : OFISIS S.A.                  --*/                
/*---Sistema              : Tesoreria                    --*/                
/*---M¸dulo               : Empresa                      --*/                
/*---Programa             : Procedimiento para cargar    --*/                
/*---                       detalle rendicion            --*/                      
/*---Script               : ttproc_i.sql                 --*/                
/*---Nombre SP            : SP_TMDOCU_PROV_I07           --*/                
/*---Desarrollado por     : Aldo Escobar / Alberto E.    --*/                
/*---Fecha Creaci¸n       : 25/10/2011                   --*/                
/*---Base Datos           : Microsoft Sql Server         --*/                
/*---Versi¸n              : 9.0.4                        --*/                
/*---Invoca a SP          :                              --*/                
/*---------------------------------------------------------*/                
/*---------------------------------------------------------*/                
/*---Modificado 1 por     :                              --*/                
/*---Fecha Modificaci¸n   :                              --*/                 
/*---Detalle Modificaci¸n :                              --*/                
/*---------------------------------------------------------*/                
/*---------------------------------------------------------*/                
/*---Comentarios                                         --*/                
/*---                                                    --*/                
/*          
exec SP_TMDOCU_PROV_I06   '01', 'OFISIS','001'          
*/          
/*---------------------------------------------------------*/               
@ISCO_EMPR   TD_VC_002,                    
@ISCO_USUA_MODI  TD_VC_008_USUA ,             
@ISCO_UNID_CNTB  TD_VC_003,
@INNU_PROC_CARG  TD_IN_001          
           
As              
Declare                
          
          
@CNNU_FILA    INTEGER ,           
@CSCO_PROV    TD_VC_020  ,            
@CSTI_DOCU    TD_VC_003  ,              
@CSNU_DOCU    TD_VC_020  ,              
@CSCO_MONE    TD_VC_003  ,              
@CDFE_EMIS    TD_DT_001  ,              
@CDFE_VENC    TD_DT_001  ,               
@CNFA_CAMB    TD_NU_015_006 ,         
@CSTI_OPER    TD_VC_003 ,              
@CSDE_OBSE    TD_VC_100  ,               
@CNIM_AFEC    TD_NU_016_004  ,              
@CNIM_INAF    TD_NU_016_004  ,             
@CSCO_IMPU    TD_VC_020  ,             
@CNIM_IMPU    TD_NU_016_004  ,              
@CNIM_TOTA    TD_NU_016_004  ,             
@CSCO_CNTA    TD_VC_020  ,              
@CSTI_AUXI    TD_VC_001  ,              
@CSCO_AUXI    TD_VC_020  ,              
@CSCO_ORDE_SERV  TD_VC_020  ,              
@CSST_GRAV_NGRA TD_VC_001  ,             
@CSFE_PAGO  TD_DT_001,       
@CNFA_CAMB_REND   TD_NU_015_006,      
@CSCO_COND_PAGO  TD_VC_003,    
@CSST_SUJE_DETR TD_VC_001,    
@CSCO_ACTI_DETR TD_VC_003,    
@CNPO_DIST      TD_NU_009_004,    
          
          
              
@VSNU_SERI_EXIS     TD_VC_004  ,            
@VSTI_DOCU   TD_VC_001  ,            
@VSST_SERI   TD_VC_001  ,            
@VSNU_SERI_00  TD_VC_020  ,              
@VSNU_SERI_01  TD_VC_020  ,             
@VSNU_SERI_02  TD_VC_020  ,            
@VSCO_PROV   TD_VC_020  ,            
@VNNU_LONG   INTEGER   ,            
@VSCO_MONE   TD_VC_003  ,            
@VSFE_EMIS_DD  TD_VC_002  ,            
@VSFE_EMIS_MM  TD_VC_002  ,            
@VSFE_EMIS_AA  TD_VC_004  ,            
@VSTI_SITU_CXPA  TD_VC_001  ,            
@VSST_CIER_CNTB  TD_VC_001  ,            
@VSFE_VENC_DD  TD_VC_002  ,            
@VSFE_VENC_MM  TD_VC_002  ,            
@VSFE_VENC_AA  TD_VC_004  ,            
@VSFA_CAMB_EVAL  TD_VC_010,            
@VNFE_EMIS_AA   INTEGER,          
@VNFE_EMIS_MM INTEGER,          
@VSCO_CNTA_EMPR  TD_VC_020,          
@VSST_AUXI_EMPR  TD_VC_001,          
@VSST_DOCU_CNTB  TD_VC_001,          
@VSST_MONE   TD_VC_001,           
@VSCO_MONE_CNTA  TD_VC_003,          
@VSST_ORDE_SERV  TD_VC_001,          
@VNNV_INFO_CNTA INTEGER,          
@VNPC_IMPT   INTEGER,          
@VNNU_CONT   INTEGER,           
@VNIM_CONV   NUMERIC(16,4),          
@CDFE_PAGO   DATETIME,           
@VSTI_AUXI_EMPR   TD_VC_003,          
@VSCO_AUXI_EMPR TD_VC_020,          
@VSCO_ORDE_SERV TD_VC_020,          
@VNNU_LONG_SERI  INTEGER,          
@VNNU_ERRO    INTEGER,          
@VSST_ASTO_RESU TD_VC_001,          
@VSCO_MONE_NACI TD_VC_003,          
@VSCO_MONE_EXTR TD_VC_003,          
@VNFA_CAMB_EXTR TD_NU_015_006,          
@VSTI_CAMB TD_VC_001,          
@VSTI_ORIG TD_VC_001,          
@VSST_AUXI_0008 TD_VC_001,          
@VSST_ACTU_REND TD_VC_001,        
@VSCO_TIPO_OPER TD_VC_003,    
@VSCO_TIPO_OPEG TD_VC_003,    
@VNPO_DETR      TD_NU_009_004,    
@VSCO_TIOP_DETR TD_VC_003,    
@VSTI_PROV     TD_VC_003,    
@VSNU_ASTO      TD_VC_010,    
@VSNU_DOCU      TD_VC_020    
--@VSST_DOCU_CNTB TD_VC_001        
             
             
Begin Tran SP_TMDOCU_PROV_I06      

 SELECT @INNU_PROC_CARG = ISNULL(MAX(NU_PROC_CARG),0)+1
 FROM TMDOCU_PROV
 WHERE CO_EMPR = @ISCO_EMPR
          
 Declare CU_TMDOCU_PROV_I06 Cursor For                
 SELECT CO_PROV ,  TI_DOCU , NU_DOCU ,  CO_MONE ,  TI_OPER, CO_COND_PAGO, FE_EMIS , FE_VENC ,            
 FA_CAMB ,  ST_SUJE_DETR, CO_ACTI_DETR, DE_OBSE,  IM_AFEC ,            
 IM_INAF ,  CO_IMPU ,   IM_IMPU,  IM_TOTA,  CO_CNTA,  TI_AUXI ,            
 CO_AUXI ,  CO_ORDE_SERV, ST_GRAV_NGRA     
 FROM #TWDOCU_ERRO_03    
 GROUP BY      CO_PROV ,  TI_DOCU , NU_DOCU ,  CO_MONE ,  TI_OPER, CO_COND_PAGO, FE_EMIS , FE_VENC ,            
 FA_CAMB ,  ST_SUJE_DETR, CO_ACTI_DETR, DE_OBSE,  IM_AFEC ,            
 IM_INAF ,  CO_IMPU ,   IM_IMPU,  IM_TOTA,  CO_CNTA,  TI_AUXI ,            
 CO_AUXI ,  CO_ORDE_SERV, ST_GRAV_NGRA            
               
               
 Open  CU_TMDOCU_PROV_I06                 
 Fetch CU_TMDOCU_PROV_I06                 
 Into           
 @CSCO_PROV  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CSTI_OPER  ,@CSCO_COND_PAGO, @CDFE_EMIS , @CDFE_VENC  ,     
 @CNFA_CAMB  , @CSST_SUJE_DETR, @CSCO_ACTI_DETR,          
 @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMPU  , @CNIM_IMPU  , @CNIM_TOTA  ,           
 @CSCO_CNTA  ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV , @CSST_GRAV_NGRA         
           
 While (@@FETCH_STATUS = 0)                  
  Begin                  
        
    If (@@FETCH_STATUS < 0)                  
    Begin                  
      RAISERROR 20001 'FIN DE ARCHIVO'                  
   Close CU_TMDOCU_PROV_I06                  
   Deallocate CU_TMDOCU_PROV_I06                  
   Rollback tran                  
   Return                  
    End                  
          
   SELECT @VNPC_IMPT = PC_IMPT          
   FROM TTIMPT           
   WHERE CO_IMPT = @CSCO_IMPU          
          
   -----------------------------------          
          
   Select      
   @VSCO_MONE_NACI = CO_MONE_DEFA, @VSCO_MONE_EXTR = CO_MONE_EXTR,           
   @VSTI_CAMB = TI_CAMB, @VSTI_ORIG = TI_ORIG,    
   @VSCO_TIPO_OPER = CO_TIPO_OPER,                    
   @VSCO_TIPO_OPEG = CO_TIPO_OPEG            
   From TMPARA_TESO                
   Where CO_EMPR = @ISCO_EMPR             
           
       ---    
             
   If @CSCO_MONE != @VSCO_MONE_NACI And @CSCO_MONE != @VSCO_MONE_EXTR                
    Select @VNFA_CAMB_EXTR = (SELECT OFITESO.dbo.FN_TCFACT_CAMB_Q02(@CSCO_MONE, @VSCO_MONE_EXTR,                
    @CDFE_EMIS, 1, @VSTI_CAMB, @VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @CNFA_CAMB))                
   Else                 
    Select @VNFA_CAMB_EXTR = 1.00         
        
          
   IF @CSST_SUJE_DETR = 'S'     
    BEGIN    
     SELECT @VNPO_DETR = PO_DETR    
     From   TTACTI_DETR    
     Where  CO_ACTI_DETR = @CSCO_ACTI_DETR     
         
     Select @VSCO_TIOP_DETR = CO_TIOP_DETR    
     From TMPARA_TESO      
     Where CO_EMPR = @ISCO_EMPR    
    END    
   ELSE    
    BEGIN    
     SELECT @VNPO_DETR = 0    
     SELECT @CSCO_ACTI_DETR = NULL    
     SELECT @VSCO_TIOP_DETR = NULL    
    END    
        
   SELECT @VSTI_PROV = T1.TI_CLIE              
  FROM TMAUXI_EMPR T1, TMPARA_TESO T2              
  WHERE T1.CO_EMPR = @ISCO_EMPR              
  AND T1.CO_EMPR = T2.CO_EMPR              
  AND T1.TI_AUXI_EMPR = T2.CO_TIAU_PROV              
  AND T1.CO_AUXI_EMPR = @CSCO_PROV      
        
        
   /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/               
  If @VSCO_TIPO_OPER != @CSTI_OPER  And                       
   @VSCO_TIPO_OPEG != @CSTI_OPER                       
 Exec SP_TTULTI_ASTO_Q04 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @CSTI_OPER, @CDFE_VENC,                     
    @VSNU_ASTO OUTPUT      
    
       
   Insert into TMDOCU_PROV(              
 CO_EMPR, CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,              
 CO_MONE, CO_TIPO_OPER, CO_COND_PAGO, FE_EMIS,  CO_UNID_CONC,              
 FE_VENC, FA_TIPO_CAMB, IM_BRUT_AFEC,              
 IM_BRUT_INAF, IM_GAFI,  IM_MORA, IM_FLET,ST_AFEC_GAFI,              
 ST_AFEC_MORA, ST_AFEC_FLET, ST_DCT1_BRAF, ST_DCT1_BRIN,              
 ST_DCT1_GAFI, ST_DCT1_MORA, ST_DCT1_FLET, ST_DCT2_BRAF,              
 ST_DCT2_BRIN, ST_DCT2_GAFI, ST_DCT2_MORA, ST_DCT2_FLET,              
 PC_DCT1, IM_DCT1, PC_DCT2, IM_DCT2,              
 CO_IMP1, PC_IMP1, IM_IMP1, CO_IMP2, PC_IMP2,              
 IM_IMP2, CO_IMP3, PC_IMP3, IM_IMP3, PC_SCRF,              
 IM_SCRF, IM_SCF1, IM_SCF2, IM_SCF3,  IM_TOTA,              
 IM_PAGA, TI_DOCU_ORIG, NU_DOCU_ORIG, FE_DOCU_ORIG,              
 ST_CONT, DE_OBSE, NU_REND_GAST, FE_PROG_PAGO,              
 CO_ESTA_DOCU,  FE_REGI_COMP, ST_ORIG_COSE, NU_COMP_SERV, CO_MODE_DIST,              
 ST_REND_COMP, NU_SREN_GAST, TI_PROV, FE_REND_GAST, NU_ASTO, NU_IMPO,               
 FA_CAMB_EXTR, FE_RECE, ST_SUJE_DETR, CO_ACTI_DETR, CO_TIOP_DETR, PO_DETR, IM_VALO_REFE, ST_GRAV_NGRA, CO_DEST, NU_DEST, CO_DEPE_ADUA, NU_ANNO_ADUA)    
 VALUES(@ISCO_EMPR,  @CSCO_PROV, @CSTI_DOCU, @CSNU_DOCU, @CSCO_MONE,              
  @CSTI_OPER, @CSCO_COND_PAGO,  @CDFE_EMIS,  @ISCO_UNID_CNTB, @CDFE_VENC,              
  @CNFA_CAMB, @CNIM_AFEC, @CNIM_INAF, 0, 0, 0,              
  NULL, NULL, NULL, NULL, NULL,              
  NULL, NULL, NULL, NULL,              
  NULL, NULL, NULL,  NULL, 0,              
  0, 0,  0,  @CSCO_IMPU, @VNPC_IMPT, @CNIM_IMPU,              
  NULL, 0, 0, NULL, 0, 0,              
  NULL, 0, 0, 0, 0,               
  @CNIM_TOTA, 0, NULL, NULL, NULL, 'N' , @CSDE_OBSE,              
  NULL, @CDFE_VENC,              
  'ACT', @CDFE_VENC, ' ', NULL, NULL,              
  'N', NULL, @VSTI_PROV, NULL, @VSNU_ASTO, NULL,               
  @VNFA_CAMB_EXTR, @CDFE_EMIS, @CSST_SUJE_DETR, @CSCO_ACTI_DETR, @VSCO_TIOP_DETR, @VNPO_DETR, 0, @CSST_GRAV_NGRA, '2', '1', NULL, NULL)    
     
        
      
   If @@error <> 0                  
         Begin                  
     Close CU_TMDOCU_PROV_I06                  
     Deallocate CU_TMDOCU_PROV_I06                  
               rollback tran                  
         return                  
            End       
                  
    
               
                
   UPDATE #TWDOCU_ERRO_03              
   SET NU_ASTO = @VSNU_ASTO              
   WHERE CO_PROV  = @CSCO_PROV AND              
   TI_DOCU = @CSTI_DOCU AND              
   NU_DOCU = @CSNU_DOCU   
   
   UPDATE TMDOCU_PROV
   SET	  NU_PROC_CARG = @INNU_PROC_CARG
   WHERE CO_EMPR = @ISCO_EMPR
   AND   CO_PROV = @CSCO_PROV
   AND	 CO_TIPO_DOCU = @CSTI_DOCU
   AND   NU_DOCU_PROV = @CSNU_DOCU           
              
   IF (@@ERROR != 0)                
   Begin                           
    RAISERROR 20001 'ERROR DE INSERCION'                          
    RollBack Tran SP_TMDOCU_PROV_I06                          
    RETURN                          
   End                                
            
          
Fetch  CU_TMDOCU_PROV_I06                 
Into           
@CSCO_PROV  , @CSTI_DOCU  , @CSNU_DOCU  , @CSCO_MONE  , @CSTI_OPER  ,@CSCO_COND_PAGO, @CDFE_EMIS , @CDFE_VENC  ,     
 @CNFA_CAMB  , @CSST_SUJE_DETR, @CSCO_ACTI_DETR,          
 @CSDE_OBSE  , @CNIM_AFEC  , @CNIM_INAF  , @CSCO_IMPU  , @CNIM_IMPU  , @CNIM_TOTA  ,           
 @CSCO_CNTA  ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV , @CSST_GRAV_NGRA         
             
            
End            
            
Close CU_TMDOCU_PROV_I06                
Deallocate CU_TMDOCU_PROV_I06          
    
    
/****DISTRIBUCION DE CUENTAS**********/    
    
SELECT @VSCO_PROV = NULL, @VSTI_DOCU = NULL, @VSNU_DOCU = NULL, @VNNU_CONT = 0        
        
 Declare CU_TMDOCU_PROV_I06_1 Cursor For                            
 SELECT         
 CO_PROV ,  TI_DOCU , NU_DOCU , IM_AFEC ,                        
 IM_INAF ,  CO_CNTA,  TI_AUXI ,                        
 CO_AUXI ,  CO_ORDE_SERV, PO_DIST                   
 FROM #TWDOCU_ERRO_03                     
     
 SELECT @VNNU_CONT = 0         
                           
 Open  CU_TMDOCU_PROV_I06_1                             
 Fetch CU_TMDOCU_PROV_I06_1                             
 Into                       
 @CSCO_PROV  , @CSTI_DOCU  , @CSNU_DOCU  , @CNIM_AFEC  , @CNIM_INAF  ,                        
 @CSCO_CNTA ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV, @CNPO_DIST         
     
     
                  
                       
 While (@@FETCH_STATUS = 0)                              
  Begin                              
   If (@@FETCH_STATUS < 0)                              
    Begin                              
   RAISERROR 20001 'FIN DE ARCHIVO'                              
   Close CU_TMDOCU_PROV_I06_1                              
   Deallocate CU_TMDOCU_PROV_I06_1        
   Rollback tran                              
   Return              
    End        
            
   -- IF (@VSCO_PROV + @VSTI_DOCU + @VSNU_DOCU IS NULL OR @VSCO_PROV + @VSTI_DOCU + @VSNU_DOCU  != @CSCO_PROV + @CSTI_DOCU + @CSNU_DOCU)        
     
            
        
  ----INICIALIZACIONES                            
  SELECT @VNNU_CONT = @VNNU_CONT + 1         
  SELECT @VSCO_PROV = @CSCO_PROV  , @VSTI_DOCU = @CSTI_DOCU  , @VSNU_DOCU = @CSNU_DOCU        
        
  Insert Into TDDISP_CCOS (CO_EMPR , CO_PROV, CO_TIPO_DOCU, NU_DOCU_PROV,                          
 NU_CORR, CO_CENT_COST, CO_CNTA_EMPR, CO_ORDE_SERV, ST_DIST,                          
 PO_DIST, IM_DIST, TI_AUXI_EMPR, DE_OBSE,                    
 CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)                          
 Values  (@ISCO_EMPR, @CSCO_PROV, @CSTI_DOCU, @CSNU_DOCU,                          
 @VNNU_CONT, @CSCO_AUXI, @CSCO_CNTA, @CSCO_ORDE_SERV, 'P',                          
 100, (@CNIM_AFEC + @CNIM_INAF)*(CONVERT(DECIMAL,@CNPO_DIST)/CONVERT(DECIMAL,100)) , @CSTI_AUXI, @CSDE_OBSE,                       
 @ISCO_USUA_MODI, GETDATE(),@ISCO_USUA_MODI, GETDATE())                          
        
    If @@error <> 0                              
  Begin           
   RAISERROR 20001 'ERROR DE INSERCION'                           
   Close CU_TMDOCU_PROV_I06_1                              
   Deallocate CU_TMDOCU_PROV_I06_1        
   RollBack Tran SP_TMDOCU_PROV_I06                              
   return                              
  End        
                   
 Fetch  CU_TMDOCU_PROV_I06_1        
 Into                       
 @CSCO_PROV  , @CSTI_DOCU  , @CSNU_DOCU  , @CNIM_AFEC  , @CNIM_INAF  ,                        
 @CSCO_CNTA ,  @CSTI_AUXI  , @CSCO_AUXI  , @CSCO_ORDE_SERV, @CNPO_DIST                    
        
 End        
         
 Close CU_TMDOCU_PROV_I06_1        
 Deallocate CU_TMDOCU_PROV_I06_1              
            
            
Commit Tran SP_TMDOCU_PROV_I06 

SELECT @INNU_PROC_CARG
RETURN
GO
